package com.example.midprojcampusspringboot.controller;

import com.example.midprojcampusspringboot.common.ResultUtil;
import com.example.midprojcampusspringboot.domain.entity.TManagerClass;
import com.example.midprojcampusspringboot.domain.entity.TTeacherClass;
import com.example.midprojcampusspringboot.domain.params.ActivityAddParams;
import com.example.midprojcampusspringboot.domain.params.ClassAddParams;
import com.example.midprojcampusspringboot.domain.params.ClassAddStudentsParams;
import com.example.midprojcampusspringboot.service.ClassService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * Class教学班管理
 *
 * @Author Fengwei
 * @Description a)教学班创建：对每个活动，可创建一个或多个教学班，注意每个教学班必须关联一个已发布的活动。
 * b)教学班的修改
 * c)添加学员：对已创建的教学班，将学员或学员列表添加关联至教学班。
 * d)配置教师：针对创建的教学班，可以配置对应的教师（最多两位教师）。
 **/

@RestController
@RequestMapping("/class")
public class ClassController {

    @Autowired
    private ClassService classService;

    /**
     * 1.教学班创建
     *
     **/
    @PostMapping("/create")
    public ResultUtil createClass(@RequestBody @Validated ClassAddParams classAddParams) {
        TManagerClass tManagerClass = new TManagerClass();
        BeanUtils.copyProperties(classAddParams, tManagerClass);
        return classService.save(tManagerClass) ? ResultUtil.success("创建班级成功") : ResultUtil.error("创建班级失败");
    }

    /**
     * 2.教学班修改
     *
     **/
    @PutMapping("/update")
    public ResultUtil updateClass(@RequestBody @Validated TManagerClass tManagerClass) {
        return classService.updateById(tManagerClass) ? ResultUtil.success("修改班级成功") : ResultUtil.error("修改班级失败");
    }

    /**
     * 3.添加学员或者添加学员列表
     *
     **/
    @PostMapping("/addStudent")
    public ResultUtil addStudent(@RequestBody @Validated ClassAddStudentsParams classAddStudentsParams) {
        return classService.addStudent(classAddStudentsParams) ? ResultUtil.success("添加学生成功") : ResultUtil.error("添加学生失败");
    }

    /**
     * 4.配置教师
     *
     **/
    @PostMapping("/configTeacher")
    public ResultUtil configTeacher(@RequestBody @Validated TTeacherClass tTeacherClass) {
        return classService.configTeacher(tTeacherClass) ? ResultUtil.success("配置教师成功") : ResultUtil.error("配置教师失败");
    }
}
